def generate_business_card():
    """生成标准化名片：收集用户信息并按指定样式输出"""
    print("📇 名片生成器 📇")
    print("请输入以下信息（带 * 为必填项）\n")
    
    # 收集用户信息（带输入验证，必填项不能为空）
    def get_input(prompt, required=True):
        """获取用户输入，支持必填项验证"""
        while True:
            user_input = input(prompt).strip()
            if required and not user_input:
                print("❌ 该项为必填项，不能为空！")
                continue
            return user_input
    
    # 输入信息（姓名、职位、电话、邮箱为核心必填项，可扩展其他字段）
    name = get_input("* 姓名：")
    position = get_input("* 职位：")
    company = get_input("  单位名称（可选）：", required=False)  # 可选字段
    phone = get_input("* 电话：")
    email = get_input("* 邮箱：")
    other = get_input("  其他备注（可选，如地址/微信）：", required=False)  # 扩展字段
    
    # 名片样式（严格按照要求格式，可选字段为空时不显示）
    card_line = "============================="
    card_content = [
        card_line,
        f"姓名：{name}",
        f"职位：{position}",
    ]
    
    # 可选字段：非空时才添加到名片
    if company:
        card_content.append(f"单位：{company}")
    card_content.extend([
        f"电话：{phone}",
        f"邮箱：{email}"
    ])
    if other:
        card_content.append(f"备注：{other}")
    card_content.append(card_line)
    
    # 输出名片
    print("\n🎯 您的名片已生成：")
    for line in card_content:
        print(line)

def main():
    """程序主入口：支持重复生成名片"""
    while True:
        generate_business_card()
        
        # 询问是否继续生成
        while True:
            choice = input("\n是否要生成新的名片？（y/n）：").strip().lower()
            if choice in ['y', 'n']:
                break
            print("❌ 输入无效！请输入 y（继续）或 n（退出）")
        
        if choice == 'n':
            print("👋 感谢使用，祝您工作顺利！")
            break

if __name__ == "__main__":
    main()
    
    